package lesssion25_26

import (
	"container/list"
	"time"
)

// 借鉴 TDD（测试驱动开发）  Prototype（最小原型）的思想

// 统计用户注册、登录这两个接口的响应时间的最大值和平均值、接口调用次数，并且将统计结果以 JSON 的格式输出到命令行中。

type Metrics struct {
	// key是接口名称  value 对应接口请求的响应时间或时间戳 响应时间可能有多个（在一个时间间隔内多次调用）
	responseTimes map[string]*list.List
	timestamps  map[string]*list.List
	// 线程池

}


// 记录接口请求的响应时间
func (this *Metrics)recordResponseTime(apiName string,responseTime float64){
	// 将参数的responseTime放入map中
	list := list.New()
	value := this.responseTimes[apiName]
	if value!=nil{
		// map中key 有对应的值 则不放入 java的putIfAbsent
		return
	}
	this.responseTimes[apiName]=list
	this.responseTimes[apiName].PushBack(responseTime)
}

// 记录接口请求的访问时间
func (this *Metrics)recordTimestamp(apiName string,timestamp float64){
	list := list.New()
	value := this.responseTimes[apiName]
	if value!=nil{
		// map中key 有对应的值 则不放入 java的putIfAbsent
		return
	}
	this.timestamps[apiName]=list
	this.timestamps[apiName].PushBack(timestamp)
}

// 以指定的频率统计数据并输出结果
func (this *Metrics)startRepeatedReport(period int64,unit time.Time){
	go func() {

	}()
}
